// You can install more packages below to config more as you like:
// eslint
// babel-eslint
// eslint-config-standard
// eslint-loader
// eslint-plugin-html
// eslint-plugin-promise
// eslint-plugin-standard
// postcss-cssnext

var path = require('path')
var webpack = require('webpack')
const fs = require('fs-extra')


var bannerPlugin = new webpack.BannerPlugin(
  '// { "framework": "Vue" }\n',
  { raw: true }
)

function getBaseConfig () {
  return {
    entry: {
        app: path.resolve('./src/entry.js')
    },
    output: {
      path: 'dist',
    },
    module: {
      // // You can use ESLint now!
      // // Please:
      // // 1. npm install {
      // //   babel-eslint
      // //   eslint
      // //   eslint-config-standard
      // //   eslint-loader
      // //   eslint-plugin-html
      // //   eslint-plugin-promise
      // // } --save-dev
      // // 2. set .eslintrc
      // //   take { "extends": "standard" } for example
      // //   so you need: npm install eslint-plugin-standard --save-dev
      // // 3. set the config below
      // preLoaders: [
      //   {
      //     test: /\.vue$/,
      //     loader: 'eslint',
      //     exclude: /node_modules/
      //   },
      //   {
      //     test: /\.js$/,
      //     loader: 'eslint',
      //     exclude: /node_modules/
      //   }
      // ],
      loaders: [
        {
          test: /\.js$/,
          loader: 'babel',
          exclude: /node_modules/
        }, {
          test: /\.vue(\?[^?]+)?$/,
          loaders: []
        }
      ]
    },
    vue: {
      // // You can use PostCSS now!
      // // Take cssnext for example:
      // // 1. npm install postcss-cssnext --save-dev
      // // 2. write `var cssnext = require('postcss-cssnext')` at the top
      // // 3. set the config below
      // postcss: [cssnext({
      //   features: {
      //     autoprefixer: false
      //   }
      // })]
    },
    plugins: [bannerPlugin]
  }
}

var webConfig = getBaseConfig()
webConfig.output.filename = '[name].web.js'
webConfig.module.loaders[1].loaders.push('vue')

var weexConfig = getBaseConfig()
weexConfig.output.filename = '[name].weex.js'
weexConfig.module.loaders[1].loaders.push('weex')

module.exports = [webConfig, weexConfig]










// 分解打包(不好用,废弃)
// const entry = {
//     app: path.resolve('./src/entry.js')
// }
//
//
// function getEntryFileContent (entryPath, vueFilePath) {
//     const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
//
//     // 处理扩展的路径
//     var extendFilePath = '/Users/x298017064010/Desktop/web/Weex/HellowWeex/src/extend.js';
//     const relativePathForExtend = path.relative(path.join(entryPath, '../'), extendFilePath);
//
//     return 'var App = require(\'' + relativePath + '\')\n'
//         + 'var extend = require(\'' + relativePathForExtend + '\')\n'
//         + 'var router = extend.router;\n'
//         + 'var store = extend.store;\n'
//         + 'var event = extend.event;\n'
//         + 'export default new Vue(Vue.util.extend({el: \'#root\', router, store, event}, App));'
// }
//
// function walk (dir) {
//     dir = dir || '.'
//     let directory = path.join(__dirname, './src', dir)
//     let entryDirectory = path.join(__dirname, './src/entry');
//     fs.readdirSync(directory)
//         .forEach(file => {
//             let fullpath = path.join(directory, file)
//             let stat = fs.statSync(fullpath)
//             let extname = path.extname(fullpath)
//
//             if (stat.isFile() && extname === '.vue') {
//                 let entryFile = path.join(entryDirectory, dir, path.basename(file, extname) + '.js')
//                 fs.outputFileSync(entryFile, getEntryFileContent(entryFile, fullpath))
//                 // let name = path.join('build', dir, path.basename(file, extname))
//                 let name = path.join(dir, path.basename(file, extname))
//                 entry[name] = entryFile + '?entry=true'
//                 // && file !== 'components'
//
//             } else if (stat.isDirectory()) {
//                 let subdir = path.join(dir, file)
//                 walk(subdir)
//             }
//         })
// }

// walk()

// const webConfig = getBaseConfig()
// webConfig.output.filename = 'web/[name].js'
// webConfig.module.loaders[1].loaders.push('vue')
//
// const weexConfig = getBaseConfig()
// weexConfig.output.filename = 'weex/[name].js'
// weexConfig.module.loaders[1].loaders.push('weex')